#include <cstdio> 
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    vector< vector<int> > arry; //写成arry(5) 可理解为设定大小5行 
    vector<int> d;        //定义一个一维的数组; 
    int i, j, k, n;
    int number;
    
    scanf("%d", &n );
    /*可以这样实现对vector二维的初始化，得到的是n行n列的矩阵*/ 
    for( i=0; i<n; i++ ){ 
        for( j=0; j<n; j++ ){
            scanf("%d", &number );
            d.push_back( number ); 
        }
        sort( d.begin(), d.end() ); //pai xu xuyao头文件algorithm 
        arry.push_back( d );
        //d.clear();        //清空一维的数组 
        d.resize(0);
    }
    /*遍历输出*/ 
    if( arry.empty() )
        printf("0\n");
    else{
        for( i=0; i<arry.size(); i++ ) {
            for( j=0; j<arry[0].size(); j++ ){
                printf("%d ", arry[i][j] );
            }
            printf("\n");
        }
    } 
    
    return 0;
}